home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs53.d81
/
hddirsrt.prg
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2009-10-10
|
3KB
|
103 lines
0 REM ** HD DIR SORT
10 POKE53280,0:POKE53281,0:PRINT"[147] HD DIRECTORY SORT"
12 PRINT"[154] BY D. COTTON"
14 PRINT"[153] (C) 1990 CMD"
20 DIMFE$(1000),T%(125),S%(125)
40 BF$=CHR$(255):FORI=1TO4:BF$=BF$+BF$:NEXT:FORI=1TO3:BF$=CHR$(0)+BF$:NEXT
50 FORI=1TO11:BF$=BF$+CHR$(0):NEXT
60 FORI=1TO30:ZF$=ZF$+CHR$(0):NEXT
100 REM ** SET UP
102 DV=PEEK(186)
104 INPUT"DEVICE NUMBER ";DV:IFDV<8ORDV>29THEN104
105 OPEN15,DV,15:PRINT#15,"M-R";CHR$(164);CHR$(254);CHR$(2):GET#15,I1$,I2$
106 CLOSE15:ID$=I1$+I2$:IFID$<>"HD"THENPRINT"[147]NOT AN HD!":END
107 INPUT"PARTITION NUMBER ";PA
108 IFPA<0ORPA>254THEN107
110 OPEN15,DV,15:PRINT#15,"C[208]";CHR$(PA):PRINT#15,"G-P";CHR$(PA)
112 GET#15,PT$:PT$=PT$+CHR$(0):PT=ASC(PT$):CLOSE15
114 IFPT=1THENINPUT"PATH ";PA$
116 IFPT=1THENIFPA$<>""THENIF(LEFT$(PA$,2)<>"//")OR(RIGHT$(PA$,1)<>"/")THEN114
118 IFPT=1THENIFPA$<>""THENOPEN15,DV,15:PRINT#15,"CD";PA$:CLOSE15
120 R1=R2:IFL1<R1THEN504
130 IFSKTHEN502
200 REM ** FIND STARTING T & S OF DIR
204 OPEN15,DV,15:OPEN2,DV,0,"$:*,P,R"
206 PRINT#15,"M-R";CHR$(0);CHR$(34);CHR$(2):GET#15,T$,S$
208 CLOSE2:CLOSE15
210 BT=ASC(T$+CHR$(0)):BS=ASC(S$+CHR$(0))
212 T=BT:S=BS:NF=0
300 REM ** READ DIR INTO ARRAY
301 PRINT"[147]READING DIRECTORY...":PRINT
302 BC=0
304 OPEN15,DV,15
306 OPEN2,DV,2,"#"
308 IFBC=125THENCLOSE2:CLOSE15:PRINT"[147]DIRECTORY TOO LARGE!":GOTO1100
309 NF=NF+8:PRINT#15,"U1:";2;0;T;S
310 PRINT#15,"B-P";2;0
311 FORI=0TO7
312 GET#2,NT$,NS$
314 IFI>0THEN318
316 T%(BC)=ASC(NT$+CHR$(0)):S%(BC)=ASC(NS$+CHR$(0))
318 FE$="":FORJ=1TO30:GET#2,EB$:EB=ASC(EB$+CHR$(0)):FE$=FE$+CHR$(EB):NEXT
319 FE$(BC*8+I)=FE$:IFASC(MID$(FE$,1,1)+CHR$(0))>0THENPRINTMID$(FE$,4,16)
320 NEXT
322 IF(T%(BC)*256+S%(BC)=255)THENCLOSE2:CLOSE15:GOTO500
324 T=T%(BC):S=S%(BC):BC=BC+1:GOTO308
500 REM ** ADJUST DEL FILES
502 FORI=0TONF-1
504 IFASC(MID$(FE$(I),1,1)+CHR$(0))=0THENFE$(I)=BF$
506 NEXT
600 REM ** SORT ENTRIES
602 PRINT"[147]SORTING...":PRINT
604 FORI=0TONF-2
606 FORJ=I+1TONF-1
608 IFMID$(FE$(J),4,16)<MID$(FE$(I),4,16)THENTS$=FE$(I):FE$(I)=FE$(J):FE$(J)=TS$
610 NEXT
612 IFASC(MID$(FE$(I),1,1)+CHR$(0))>0THENPRINTMID$(FE$(I),4,16)
614 NEXT
616 IFASC(MID$(FE$(NF-1),1,1)+CHR$(0))>0THENPRINTMID$(FE$(NF-1),4,16)
700 REM ** FIX DEL FILES
702 FORI=0TONF-1
704 IFASC(MID$(FE$(I),1,1)+CHR$(0))=0THENFE$(I)=ZF$
706 NEXT
800 REM ** MOVE SUBDIRS TO TOP
801 PRINT"[147]CHECKING FOR SUBDIRECTORIES...":PRINT
802 CL=0
804 FORI=1TONF-1
806 IFASC(MID$(FE$(I),1,1)+CHR$(0))<>134THEN818
808 TS$=FE$(I)
810 FORJ=ITOCL+1STEP-1
812 FE$(J)=FE$(J-1)
814 NEXT
816 FE$(CL)=TS$:CL=CL+1
818 NEXT
900 REM ** DISPLAY FINAL
902 FORI=0TONF-1
904 IFASC(MID$(FE$(I),1,1)+CHR$(0))>0THENPRINTMID$(FE$(I),4,16)
906 NEXT
1000 REM ** WRITE NEW DIR
1002 PRINT"[147]WRITE NEW DIRECTORY TO DISK? ";
1004 GETK$:IFK$=""THEN1004
1006 IFK$<>"Y"ANDK$<>"[217]"THEN1100
1007 PRINT"[147]WRITING NEW DIRECTORY..."
1008 T=BT:S=BS
1010 OPEN15,DV,15:OPEN2,DV,2,"#"
1012 FORI=0TOBC
1014 PRINT#15,"B-P";2;0
1016 PRINT#2,CHR$(T%(I));CHR$(S%(I));FE$(I*8);
1018 FORJ=1TO7
1020 PRINT#2,CHR$(0);CHR$(0);FE$(I*8+J);
1022 NEXT
1024 PRINT#15,"U2:";2;0;T;S
1026 T=T%(I):S=S%(I)
1028 NEXT
1030 CLOSE2
1031 PRINT"[147]VALIDATING..."
1032 PRINT#15,"V0:"
1034 CLOSE15
1100 REM ** DO ANOTHER
1102 PRINT"[147]SORT ANOTHER DIRECTORY?";
1104 GETK$:IFK$=""THEN1104
1106 IFK$<>"Y"ANDK$<>"[217]"THENEND
1108 RUN